package com.qiall.common.exception;

public enum ResultCode {

    /* 成功状态码 */
    SUCCESS(0, "成功"),
    /* 失败状态码 */
    FAIL(200, "失败"),
    /* 系统500错误*/
    SYSTEM_ERROR(10000, "系统异常，请稍后重试"),
    UNAUTHORIZED(10401, "签名验证失败"),
    TEST(500, "测试异常"),

    /* 参数错误：10001-19999 */
    PARAM_IS_INVALID(10001, "参数无效"),
    PERMISSION_NOT_ALLOW(10002, "没有权限"),
    DATA_ALREADY_EXIST(10003, "数据已经存在"),
    DATA_NOT_EXIST(10004, "数据不存在"),

    /* 用户错误：20001-29999*/
    USER_HAS_EXISTED(20001, "用户名已存在"),
    USER_NOT_FIND(20002, "用户不存在或者密码错误"),
    PHONE_NOT_THIS_USER(20003, "手机号码错误"),
    ESTATE_REVIEW_PARAMS_CHECK_FAIL(20004, "房产信息审核失败，信息不匹配"),
    USER_NOT_LOGIN(20005, "用户未登录"),
    USER_AUTH_FAIL(20006, "角色未授权"),
    USER_IS_EXIST(20007, "用户已存在"),
    WX_IS_ALREADY_BIND(20008, "微信已经绑定过其他手机号"),
    USER_NOT_EXIT(20009, "用户不存在"),
    /**
     * 第三方系统错误
     */
    WECHAT_ERROR(30001, "微信调用失败"),
    SMS_SEND_FAIL(30002, "发送短信失败"),
    SMS_CODE_ERROR(30003, "验证码错误"),


    // 地产信息

    ESTATE_NOT_EXIT(40001, "用户不存在"),
    IS_LEAF(40002, "父节点是叶子节点"),

    // 房产信息
    审核失败(50001, "审核失败提交数据不匹配"),

    // 绑定
    绑定失败(60001, "绑定失败数据已经做过绑定"),

    ;

    ResultCode(Integer code, String errorMessage) {
        this.code = code;
        this.errorMessage = errorMessage;
    }

    private Integer code;

    private String errorMessage;

    public Integer code() {
        return this.code;
    }

    public String getErrorMessage() {
        return this.errorMessage;
    }

    public static ResultCode ofCode(int code) {
        for (ResultCode resultCode : ResultCode.values()) {
            if (resultCode.code.equals(code)) {
                return resultCode;
            }
        }
        return null;
    }
}
